Skip to content

Conversation

@loicguillois
Copy link
Collaborator

Problème

Les filtres et/ou le comptage du parc de logements ne fonctionnaient plus correctement. Quand les périmètres avaient une intersection vide entre les geo codes de l'utilisateur et ceux de l'établissement, tous les logements étaient affichés/comptés au lieu de 0.

Cause

Dans housingRepository.ts, quand l'intersection des geo codes résultait en un tableau vide [], la condition :

if (filters.localities?.length) {
  queryBuilder.whereIn(`${housingTable}.geo_code`, filters.localities);
}

était falsy (car [].length === 0), donc le filtre whereIn n'était pas appliqué et TOUS les logements étaient retournés.

Solution

Ajout d'une vérification précoce : si on avait des restrictions géographiques (establishment, intercommunalities ou localities) mais que leur intersection est vide, on retourne immédiatement 0 résultats au lieu d'exécuter une requête sans filtre géographique.

Fichiers modifiés

  • server/src/repositories/housingRepository.ts : fonctions find() et count()

Test plan

  • Vérifier qu'un utilisateur avec des geo codes qui n'intersectent pas voit 0 logements
  • Vérifier que les filtres fonctionnent correctement pour les cas normaux
  • Tests unitaires passent (145 tests)

@tristanrobert
Copy link
Contributor

tristanrobert commented Jan 8, 2026

Snyk checks have passed. No issues have been found so far.

Status Scanner Critical High Medium Low Total (0)
Open Source Security 0 0 0 0 0 issues

💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse.

@notion-workspace
Copy link

When filtering housings by geo codes (establishment, intercommunalities,
localities), if the intersection results in an empty set, return 0 results
immediately instead of querying without the geo filter.

Previously, an empty localities array would be passed to the query, but
since `if (filters.localities?.length)` is falsy for [], the whereIn
filter was not applied, returning all housings instead of none.

This fixes the issue where perimeters with empty intersection between
user geo codes and establishment geo codes would display/count all housings.
@loicguillois loicguillois force-pushed the fix/housing-count-empty-perimeter-intersection branch from 963be16 to 0de513d Compare January 19, 2026 10:55
@loicguillois loicguillois merged commit 2779b3a into main Jan 19, 2026
5 of 7 checks passed
@loicguillois loicguillois deleted the fix/housing-count-empty-perimeter-intersection branch January 19, 2026 10:55
@sonarqubecloud
Copy link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants